/*// 发送ajax请求
1、封装功能函数
    1、功能点明确
    2、函数内部应该保留固定代码（静态的）
    3、将动态的数据抽取成形参，由使用者根据自身的情况动态地传入实参。
    4、一个良好的功能函数应该设置形参的默认值(ES6的形参默认值即可)。

2、封装功能组件
    1、功能点明确
    2、组件内部保留静态的代码
    3、将动态的数据抽取成props参数，由使用者根据自身的情况以标签属性的形式动态传入props数据
    4、一个良好的组件应该设置组件的必要性及数据类型。
        props:{
            msg:{
                required:true,
                default:默认值,
                type:String
            }
        }
*/

import config from "./config";

//把封装的请求方法暴露出去
export default (url, data = {}, method = 'GET') => {
    return new Promise((resolve, reject) => {
        // 1、new Promise初始化Promise实例的状态为pending
        wx.request({
            // http://localhost:3000/banner
            url: config.host + url,
            data,
            method,
            // 把cookie添加到请求头里面
            header: {
                // 用同步，防止执行步骤出问题
                cookie: wx.getStorageSync('cookies').length ? wx.getStorageSync('cookies').find(item =>
                    item.indexOf('MUSIC_U') !== -1) : ''
            },
            success: (res) => {
                // console.log(res);
                if (data.isLogin) { //当data中的isLogin为true，它就是登录请求
                    // 将用户的cookie存储到本地
                    wx.setStorage({
                        key: 'cookies',
                        data: res.cookies
                    });
                }
                // console.log('请求成功：', res);
                resolve(res.data); //resolve修改promise状态为成功状态 fullfilled （ resolved ）
            },
            fail: (err) => {
                // console.log('请求失败：', err);
                reject(err); //修改promise状态为失败状态，rejected
            }
        });
    })
}